<!DOCTYPE html>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<style>
  @keyframes anim {
    from { background-color: blue; }
    to { background-color: red; }
  }

  #target {
    animation: anim 20s -10s infinite linear paused;
    width: 100px;
    height: 100px;
    position: relative;
    background-color: green;
  }
</style>
<div id="target"></div>
<script>
  var test1 = async_test("Changing animation duration to current elapsed time should trigger an AnimationIteration event");
  target.addEventListener('animationend', function(event) {
    assert_equals(event.elapsedTime, 1, 'elapsed time');
    test1.done();
  });

  test(function() {
    target.offsetTop;
    target.style.animationIterationCount = 'infinite';
    target.style.animationDuration = '4s';
    assert_equals(getComputedStyle(target).backgroundColor, 'rgb(128, 0, 128)', 'background color');

    target.style.animationDirection = 'alternate';
    target.style.animationDuration = '10s';
    assert_equals(getComputedStyle(target).backgroundColor, 'rgb(255, 0, 0)', 'background color');

    target.style.animationIterationCount = '2';
    target.style.animationPlayState = 'running';
    assert_not_equals(getComputedStyle(target).backgroundColor, 'rgb(0, 128, 0)', 'background color');

    target.style.animationPlayState = 'paused';
    target.style.animationIterationCount = '1';
    target.style.animationDuration = '1s';
    assert_equals(getComputedStyle(target).backgroundColor, 'rgb(0, 128, 0)', 'background color');

  }, "Check that changes in the animation timing properties are reflected immediately");
</script>
